It is now possible to collect large amounts of data in real-time from diverse sources due to the expanding number of sensors operating in the physical world. However, developers are faced with the problem of finding and receiving desired data from the physical world sensors because the data may be coming from diverse sources such as sensors from unrelated systems and reports such as weather information, traffic information, accident reports, and so forth.
Additionally, it is usually a requirement for an application's behavior to be easily adaptable to reflect today's rapidly changing business environments. Rule-based systems are useful in satisfying this requirement because application behavior may be changed by deploying new rules to a static application container. However, rule-based systems may have the drawback that they can be complex to develop and understand.
Rule-based systems typically offer a programming model based on condition/action pairs, which is a powerful abstraction for general rule-based applications. But in sensor-based applications where hardware and software systems are non-standard, developers may face a daunting variety of underlying hardware and software systems and programming models thereby making programs difficult to write and/or non-portable. For example, acquiring data from one kind of sensor system may be quite different from the same task with another kind of sensor system. Current sensor-based programming models assume a common underlying Operating System (OS), but this is a feasible assumption only when the sensor system is built from the ground up around a selected OS. Also, many rules require business data in their evaluation and thus rule programmers face the additional hurdle of writing code to acquire the necessary data.
A further challenge encountered is that since communications in such sensor environments are often low-bandwidth, and the acquisition of data from the sensors is usually an expensive operation, an unacceptable load on the system can be incurred if more than one application is consuming sensor data. In addition, when a rules-engine evaluates a rule at runtime, it may need to reference data that is coming from diverse input sources and may be refreshed at different periodic rates. As a result of the preceding limitations, current programming systems support only sense-and-respond systems in which the data acquisition is included in the scope of the application.